package com.yunhe.common.util;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 参数工具类
 * @desc 提供参数获取转换相应的方法
 * @author liuronglei
 */
public class ParamUtil {

    /**
     * 获得String属性值
     * @param item 数据条目
     * @param key 属性名
     */
    public static String getString(Map<String, Object> item, String key) {
        Object obj = item.get(key);
        if (obj != null) {
            return (String)obj;
        } else {
            return null;
        }
    }

    /**
     * 获得Number属性值
     * @param item 数据条目
     * @param key 属性名
     */
    public static Number getNumber(Map<String, Object> item, String key) {
        Object obj = item.get(key);
        if (obj != null && obj instanceof Number) {
            return (Number)obj;
        } else {
            return null;
        }
    }

    /**
     * 获得Double属性值
     * @param item 数据条目
     * @param key 属性名
     */
    public static Double getDouble(Map<String, Object> item, String key) {
        Object obj = item.get(key);
        if (obj != null && obj instanceof Number) {
            return ((Number)obj).doubleValue();
        } else {
            return null;
        }
    }

    /**
     * 获得Integer属性值
     * @param item 数据条目
     * @param key 属性名
     */
    public static Integer getInteger(Map<String, Object> item, String key) {
        Object obj = item.get(key);
        if (obj != null && obj instanceof Number) {
            return ((Number)obj).intValue();
        } else {
            return null;
        }
    }

    /**
     * 获得Long属性值
     * @param item 数据条目
     * @param key 属性名
     */
    public static Long getLong(Map<String, Object> item, String key) {
        Object obj = item.get(key);
        if (obj != null && obj instanceof Number) {
            return ((Number)obj).longValue();
        } else {
            return null;
        }
    }

    /**
     * 获得String数组属性值
     * @param item 数据条目
     * @param key 属性名
     */
    public static List<String> getStrings(Map<String, Object> item, String key) {
        Object obj = item.get(key);
        if (obj != null && obj instanceof List) {
            return (List<String>)obj;
        } else {
            return null;
        }
    }

    /**
     * 获得Number数组属性值
     * @param item 数据条目
     * @param key 属性名
     */
    public static List<Number> getNumbers(Map<String, Object> item, String key) {
        Object obj = item.get(key);
        if (obj != null && obj instanceof List) {
            return (List<Number>)obj;
        } else {
            return null;
        }
    }

    /**
     * 获得Double数组属性值
     * @param item 数据条目
     * @param key 属性名
     */
    public static List<Double> getDoubles(Map<String, Object> item, String key) {
        Object obj = item.get(key);
        if (obj != null && obj instanceof List) {
            List<Double> list = new ArrayList<>();
            List<Number> numbers = (List<Number>)obj;
            for (Number number : numbers) {
                list.add(number.doubleValue());
            }
            return list;
        } else {
            return null;
        }
    }

    /**
     * 获得Integer数组属性值
     * @param item 数据条目
     * @param key 属性名
     */
    public static List<Integer> getIntegers(Map<String, Object> item, String key) {
        Object obj = item.get(key);
        if (obj != null && obj instanceof List) {
            List<Integer> list = new ArrayList<>();
            List<Number> numbers = (List<Number>)obj;
            for (Number number : numbers) {
                list.add(number.intValue());
            }
            return list;
        } else {
            return null;
        }
    }

    /**
     * 获得Long数组属性值
     * @param item 数据条目
     * @param key 属性名
     */
    public static List<Long> getLongs(Map<String, Object> item, String key) {
        Object obj = item.get(key);
        if (obj != null && obj instanceof List) {
            List<Long> list = new ArrayList<>();
            List<Number> numbers = (List<Number>)obj;
            for (Number number : numbers) {
                list.add(number.longValue());
            }
            return list;
        } else {
            return null;
        }
    }
}
